/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author KAREN
 */
public class DiscoDAO implements OperacoesDAO {

    private ArrayList<Disco> discos = new ArrayList();

    /*
     * @param obj é o disco que será inserido
     */
    @Override
    public void inserir(Object obj) {
        if (obj instanceof Disco) {
            Disco d = (Disco) obj;
            discos.add(d);
        }
    }

    /*
     * @param obj é titulo
     * @return false se não há o que excluir
     */
    @Override
    public boolean excluir(Object obj) {
        boolean achou = false;
        ArrayList pesquisa = pesquisar(obj);
        if (pesquisa.size() != 0) { //Encontrou alguma coisa
            discos.removeAll(pesquisa);
            achou = true;
        }
        return achou;
    }

    /*
     * @param obj é o disco com as informações alteradas exceto título
     */
    @Override
    public void editar(Object obj) {
        if (obj instanceof Disco) {
            Disco d = (Disco) obj;
            String chave = d.getTitulo();
            for (int i = 0; i < discos.size(); i++) {
                Disco achou = discos.get(i);
                if (chave.equals(achou.getTitulo())) {
                    discos.set(i, d);
                }
            }
        }
    }

    @Override
    public ArrayList pequisar() {
        return discos;
    }

    /*
     * @param obj é o critério de pesquisa (titulo) que tem que ser do tipo String
     * @return uma coleção de todos os discos encontrados
     */
    @Override
    public ArrayList pesquisar(Object obj) {
        ArrayList<Disco> retorno = new ArrayList();
        if (obj instanceof String) {
            String chave = (String) obj;
            Iterator<Disco> it = discos.iterator();
            while (it.hasNext()) {
                Disco d = it.next();
                if (chave.equalsIgnoreCase(d.getTitulo())) {
                    retorno.add(d);
                }
            }
        }
        return retorno;
    }

    /*
     * Só para fins de teste 
     
    public static void main(String[] args) {
        Disco d1 = new Disco("azul", new Interprete("Carlos", Estilo.AXE), 10, 2001);
        Disco d2 = new Disco("amarelo", new Interprete("Luiza", Estilo.BLUES), 10, 2001);
        Disco d3 = new Disco("vermelho", new Interprete("Pedro", Estilo.COUNTRY), 10, 2001);
        Disco d4 = new Disco("amarelo", new Interprete("Luiza", Estilo.BLUES), 10, 2001);
        Disco d5 = new Disco("lilas", new Interprete("Joao", Estilo.FORRO), 10, 2001);

        DiscoDAO discoteca = new DiscoDAO();
        discoteca.inserir(d1);
        discoteca.inserir(d2);
        discoteca.inserir(d3);
        discoteca.inserir(d4);
        discoteca.inserir(d5);

        String cor="amarelo";
         boolean achou = discoteca.excluir(cor);
         if (achou) {
         ArrayList<Disco> pesquisa = discoteca.pequisar();
         Iterator it = pesquisa.iterator();
         System.out.println("Depos de excluir" + cor);
         while (it.hasNext()) {
         System.out.println(it.next());
         }
         } else {
         System.out.println("Não achou o " + cor);
         }

        d5.setAno(2013);
        discoteca.editar(d5);
        ArrayList<Disco> pesquisa = discoteca.pequisar();
        Iterator it = pesquisa.iterator();
        System.out.println("Depos de alterar d5");
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }*/
}
